/**
 * 对分页的进一步封装，依赖 jquery 和 jquery.pager.js 。 函数开始注释部分包括一个 demo
 */
(function($, window) {
	// new Pagination({
	// method : 'get',
	// url : '../goods/find/shopId/' + _shopId + '/opt/',
	// type : 'json',
	// data : {
	// 'openId' : _openId
	// },
	// pageSize : 10, // 页面大小
	// startIndex : 1, //起始页码
	// success : printProductToPage, // state 为 0 时，回调
	// pagerHandler : 'pager' // 显示分页的 div 的 id
	// });
	function pagination(options) {
		var current = 1;
		// 当前页面
		var defaultParams = {
			method : 'post', // 请求方法 post|get
			type : 'json', // 返回内容格式，json|text //NOT SUPPORT
			url : '', // 请求地址，注意函数会自定添加分页的两个参数 ‘0/10’
			data : {}, // 使用post 方法是的请求参数
			pageSize : 10, // 页面大小
			startIndex : 0, // 服务器提供的接口页码是从几开始的，建议从0开始
			error : error, // 返回 null 时，回调
			success : success, // state 为 0 时，回调
			failed : failed, // state 为 1 时，回调
			pagerHandler : 'pager' // 显示分页的 div 的 id
		};
		var method = {
			'get' : $.get,
			'post' : $.post
		};
		// 生成最终的参数列表
		var params = $.extend(true, {}, defaultParams, options);
		/**
		 * 返回 null 时，回调
		 */
		function error() {
			alert('没有查询到数据！');
		}

		/**
		 * state 为 0 时，回调
		 */
		function success(message) {
			alert(message.msg);
		}

		/**
		 * state 为 1 时，回调
		 */
		function failed(message) {
			alert(message.msg);
		}

		/**
		 * 分页
		 */
		function pagination(recordCount) {
			var pageCount = Math.ceil(recordCount / params.pageSize);
			$('#' + params.pagerHandler).pager({
				pagenumber : current, // 当前页码,从1开始
				pagecount : pageCount, // 总页码
				buttonClickCallback : function(indexClicked) {
					current = indexClicked;
					loadPage();
				}
			});
		}

		/**
		 * 加载数据
		 */
		function loadPage() {
			// 计算向服务器发送的页码
			var index = parseInt(current) + parseInt(params.startIndex) - 1;
			// 拼接 url ，加上分页的两个参数 0/10
			var urlWithPage = params.url + '/' + index + '/' + params.pageSize;
			// 发出请求
			method[params.method](urlWithPage, params.data, function(message) {
				if (IsEmpty(message)) {
					params.error(); // 请求失败，回调
					return;
				}
				if (message.state === 0) {
					params.success(message); // state 为 0 回调
					pagination(message.result.len); // 调用分页
				} else {
					params.failed(message); // state 为 1 回调
				}
			}, 'json');
		}
		return loadPage();
	}
	window.Pagination = pagination;
})(jQuery, window);
